1. Technical Field
This invention generally relates to data processing, and more specifically relates to logically partitioned computer systems.
2. Background Art
Since the dawn of the computer age, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments. The eServer computer system developed by IBM is an example of a computer system that supports logical partitioning. If logical partitioning on an eServer computer system is desired, resource and partition manager code (referred to as a “hypervisor” in eServer terminology) is installed that allows defining different computing environments on the same platform. Once the resource and partition manager is installed, logical partitions may be created that define different computing environments. The resource and partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
A computer system that includes multiple logical partitions typically shares resources between the logical partitions. For example, in a computer system with a single CPU, two logical partitions could be defined such that 50% of the CPU is allocated to each partition, 33% of the memory to the first partition and 67% of the memory to the second partition, and two different I/O slots to the two logical partitions, one per partition. Once logical partitions are defined and shared resources are allocated to the logical partitions, each logical partition acts as a separate computer system. Thus, in the example above that has a single CPU with two logical partitions in a computer system, the two logical partitions will appear for all practical purposes to be two separate and distinct computer systems.
An issue that arises with a logically partitioned computer system is how to handle interrupts. A processor typically includes interrupt registers that are used to determine when and how to handle interrupts. In a computer system that has no logical partitions, a processor may be coupled directly to I/O hardware so that the processor processes all interrupts generated by the I/O hardware. In a logically partitioned computer system, however, a processor cannot be coupled directly to I/O hardware because I/O interrupts could occur for different physical processors and/or for different virtual processors. For this reason, some mechanism is required in a logically partitioned computer system to handle interrupts. In the prior art, interrupts are supported in a logically partitioned computer system by complex software (known as a “hypervisor” in eServer terminology) that interacts with the interrupt registers on a physical processor to handle interrupts. In a logically partitioned computer system with dedicated processors, an interrupt management interface is provided in the hypervisor that provides functions that may be called by an operating system in a logical partition to process interrupts. These functions typically interact with the physical processor registers for the dedicated processor corresponding to a logical partition. These functions do not work with logical partitions that share a processor because the processor's physical registers are not dedicated to a particular logical partition. In addition, the prior art provides no way to process a virtual interrupt (generated in software) without changing interrupt handling in a partition. Without a way to process interrupts in a logically partitioned computer system that includes shared processors and without a way to process virtual interrupts, the computer industry will continue to suffer from mechanisms and methods that unduly limit the capabilities of a logically partitioned computer system.